Ich bin nur ein Anfänger in der Swift-Codierung. Meine Idee ist ganz einfach, eine App mit zwei Schaltflächen. Wenn Sie darauf klicken, ändert ein Textfeld seinen Text. Im Main.StoryBoard füge ich ein Textfeld und zwei Schaltflächen hinzu. In der Datei ViewController.swift. Ich schreibe wie folgt: UIKit importieren Klasse ViewController: UIViewController { @IBOutlet schwaches var Textfeld: UITextField! @IBOutlet schwache Var-Schaltfläche: UIButton! @IBOutlet schwach var button2: UIButton! @IBAction func action1 (_ Absender: UIButton) { textfield.text = "Sie haben gerade auf button1 geklickt" }} @IBAction func action2 (_ Absender: UIButton) { textfield.text = "Sie haben gerade auf button2 geklickt" }} }} Es soll alles in Ordnung sein. Es wird jedoch ein Fehler angezeigt, der Folgendes anzeigt: Thread1: Signal SIGABRT in der Datei AppDelegate.swift Zeile: Klasse AppDelegate: UIResponder, UIApplicationDelegate Was ist los mit meinem Code?
2021-01-15 08:17:36
Um das Problem zu lösen, bereinigen Sie zuerst das Projekt und erstellen Sie es neu. Um das Projekt zu bereinigen, gehen Sie zu Menüleiste: Produkt -> Bereinigen Um das Projekt neu zu erstellen, klicken Sie wie gewohnt auf die Schaltfläche Ausführen. | Sie erhalten einen SIGABRT-Fehler, wenn Sie eine getrennte Steckdose haben. Klicken Sie im Storyboard auf Ihren View Controller und gehen Sie zu den Verbindungen im Seitenbereich (das Pfeilsymbol). Überprüfen Sie, ob Sie dort eine zusätzliche Steckdose, ein Duplikat oder eine zusätzliche Steckdose haben, die nicht angeschlossen ist. Wenn dies nicht der Fall ist, haben Sie Ihre Steckdosen möglicherweise nicht richtig mit Ihrem Code verbunden. Denken Sie daran, dass SIGABRT auftritt, wenn Sie versuchen, eine nicht vorhandene Steckdose (Schaltfläche, Ansicht, Textfeld usw.) anzurufen. | Für mich war es keine Steckdose. Ich habe das Problem gelöst, indem ich zum Fehler gegangen bin und gelesen habe, was darin steht. (Auch Noob ..) Das war der Fehler: Und die Lösung war hier: Scrollen Sie einfach in der Ausgabe nach oben und der Fehler wird angezeigt. | Ein häufiger Grund für diese Art von Fehler ist, dass Sie möglicherweise den Namen Ihres IBOutlets oder Ihrer IBAction geändert haben. Sie können dies einfach überprüfen, indem Sie zum Quellcode wechseln. Klicken Sie auf das main.storyboard und wählen Sie dann öffnen als und wählen Sie dann den Quellcode Der Quellcode wird geöffnet Überprüfen Sie anschließend, ob der Name des Iboutlets oder der Ibaction vorhanden ist, den Sie geändert haben. Wenn dies der Fall ist, wählen Sie das Teil aus, löschen Sie es und erstellen Sie das Iboutlet oder die Ibaction erneut. Dies sollte Ihr Problem lösen | In meinem Fall bekam ich nicht nur den Absturz im AppDelegate und ich musste die nächste Option deaktivieren: OS_ACTIVITY_MODE, dann konnte ich den wahren Absturzgrund in meiner .xib-Datei erhalten Hoffe das kann dir auch helfen :) | Ich hatte das gleiche Problem. Ich habe eine Schaltfläche im Storyboard erstellt, sie mit dem ViewController verbunden und später die Schaltfläche gelöscht. Die Verbindung war also immer noch da, aber der Knopf war nicht da, und so bekam ich den gleichen Fehler wie Sie. Reparieren: Gehen Sie zum Verbindungsinspektor (der Pfeil in der oberen rechten Ecke in Ihrem Storyboard) und löschen Sie alle nicht verwendeten Verbindungen. | Wenn Sie in Xcode 10 darauf stoßen, müssen Sie vor dem Erstellen bereinigen. Oder wechseln Sie zum Legacy-Build-System. Datei -> Arbeitsbereichseinstellungen ... -> Build-System: Legacy-Build-System. | In meinem Fall gab es überhaupt kein Protokoll. Mein Fehler war, einen View Controller in einen Navigationsstapel zu schieben, der bereits Teil des Navigationsstapels war. | Manchmal passiert es auch, wenn die Funktion nur im Hauptthread ausgeführt werden muss, sodass Sie sie beheben können, indem Sie sie dem Hauptthread wie folgt zuweisen: - DispatchQueue.main.async { Ihr Code hier }} | Für mich war dieser Fehler darauf zurückzuführen, dass ich einen Segue-Vorbereitungsschritt hatte, der nicht auf den durchgeführten Segue anwendbar war. lange Geschichte: überschreiben func vorbereiten (für segue: UIStoryboardSegue, Absender: Any?) { lass gosetup = segue.destination as! Aktualisieren gosetup.wherefrom = updatestring }} Dies wurde allen Segues angetan, als es nur für einen war. Also erstelle ich einen Booleschen Wert und platziere das Gosetup darin. | Dies ist ein sehr häufiger Fehler und kann aus mehreren Gründen auftreten. Am häufigsten wird ein IBOUTLET / IBACTION, das mit einem View Controller im Storyboard verbunden ist, aus der schnellen Datei gelöscht, jedoch nicht aus dem Storyboard. Ist dies nicht der Fall, verwenden Sie das Protokoll in der unteren Symbolleiste, um den Fehler herauszufinden und zu diagnostizieren. Sie können Haltepunkte und Debugging verwenden, um den Fehler zu finden. Um herauszufinden, wie der Fehler behoben werden kann, verwenden Sie bitte diesen Artikel, den ich bei Google gefunden habe: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode | In meinem Fall habe ich RxSwift für die Suche verwendet. Ich hatte in der onNext-Methode ausgiebig eine gemeinsam genutzte Instanz einer bestimmten Klasse verwendet, wodurch sie wahrscheinlich nicht mehr zugänglich war (Mutex). Stellen Sie sicher, dass solche Fälle nur dann sorgfältig behandelt werden, wenn dies unbedingt erforderlich ist. In meinem Fall habe ich zuvor einige Variablen verwendet, um die Rückgabewerte der Methoden der gemeinsam genutzten Instanz sicher (und nacheinander) zu speichern und sie im onNext-Block wiederzuverwenden. | Ich hatte das gleiche Problem. In meinem Fall habe ich die Datei einfach überschrieben GoogleService-Info.plist auf diesem Weg: Plattform \ ios \ YOUR_APP_NAME \ Resources \ Resources In meinem Fall waren die Dateien ohne Daten vorhanden. | Sehr aktive Frage. Verdiene 10 Reputationen, um diese Frage zu beantworten. Die Reputationsanforderung schützt diese Frage vor Spam und nicht beantworteten Aktivitäten. Nicht die Antwort, die Sie suchen? Durchsuchen Sie andere Fragen mit dem Tag ios swift oder stellen Sie Ihre eigene Frage.